package com.hhq;

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class MyPanel extends JPanel{
    private static final long serialVersionUID = 1L;
    
	public ArrayList<Image> ImgList;	//创建一个Image列表，用于存储图片资源
	//public String[] srcPath = {"/images/hwj.jpg", "/images/tank.jpg", "/images/F-22.jpg"};     //资源文件
	public String[] loadPath;   //创建一个数组用于存放本地文件路径
	public int index = 0;	//图片索引，用于判断图片位置
	public MyPanel()
	{
		addFile("./");	//初始化文件
		try
		{
			ImgList = ImageFromFile(loadPath);	//获得图片列表
		} catch (IOException e)
		{
			e.printStackTrace();
		}
    }
    
    public MyPanel(String path)
	{
		addFile(path);	//初始化文件
		try
		{
			ImgList = ImageFromFile(loadPath);	//获得图片列表
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	@Override
	protected void paintComponent(Graphics g)
	{
		//获得窗口的宽高
		int width = this.getWidth();
		int height = this.getHeight();
		
		//清除控件显示，在下次重新绘制的时候清除当前显示，不然会出现图片重叠现象
		g.clearRect(0, 0, width, height);
		
		if(!ImgList.isEmpty())	//判断列表是否为空
		{
			//绘制图片，参数：图片资源，x坐标，y坐标，宽，高，暂时用不到传入null
			g.drawImage(ImgList.get(index), 0, 0, width, height, null);
		}
		
	}
	/**
	 * 获取资源文件
	 * */
	/*public ArrayList<Image> ImageFromResource(String[] path) throws IOException
	{
		ArrayList<Image> list = new ArrayList<>();	//创建一个Image类型的数组链表用于接收Image对象
		for(String filepath: path)	//遍历传入的路径
		{
			URL url = getClass().getResource(filepath);	//加载URL资源文件
			Image image = ImageIO.read(url);	//使用ImageIO工具类读取URL
			list.add(image);	//将Image对象添加到列表中
		}
		return list;
	}*/
	/**
	 * 获取本地文件
	 * */
	public ArrayList<Image> ImageFromFile(String[] path) throws IOException
	{
		ArrayList<Image> list = new ArrayList<>();	//创建一个Image类型的数组链表用于接收Image对象
		for(String filepath: path)	//遍历传入的路径
		{
            System.out.println("read: "+ filepath);
			Image image = ImageIO.read(new File(filepath));	//使用ImageIO工具类读取文件路径
			list.add(image);	//将Image对象添加到列表中
		}
		return list;
	}
	/**
	 * 添加文件，由于文件过多且名称变化不大，所以我用了遍历的方法给路径数组添加值
	 * */
	public void addFile(String path)
	{
        ArrayList<String> arr = new ArrayList<>();
        String baseDir = path;
        String[] dirs = new File(baseDir).list();
        for(String dir: dirs){
            if(! new File(dir).isDirectory()){
                if( dir.toLowerCase().endsWith("jpg") || dir.toLowerCase().endsWith("png") ){
                    arr.add( baseDir +File.separator+ dir);
                }
            }
        }
        loadPath = new String[arr.size()];
        int i= 0;
        for(String ar : arr){
            loadPath[i++] = ar;
        }
	}
}
